package cn.kgc.javaweb.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * servlet对象的生命周期    创建 - > 销毁
 *   1.初始化  init()
 *   2.service
 *   3.销毁  destroy()
 *
 * 第一次请求   1.调用无参构造 创建servlet对象  2.通过对象调用 init方法  3.通过对象调用service 执行处理逻辑
 *
 * @author: mosin
 * @version: v1.0  2022/3/16
 */
@WebServlet("/life")
public class ServletLife extends HttpServlet {

    /**
     * 在第一次请求到达时调用该方法创建对象  对象只会创建一次
     */
    public ServletLife(){
        System.out.println("ServletLife对象被创建!");
    }

    /**
     *  初始化方法  对象创建后 会调用该方法 该方法只会调用一次
     *  资源加载
     * @throws ServletException
     */
    @Override
    public void init() throws ServletException {
        System.out.println("init()");
    }

    /**
     * 请求匹配后 处理的业务逻辑代码   请求一次 执行一次
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service()");
    }

    /**
     *对象销毁前调用的方法  在服务器正常关闭时 会调用该方法  资源的释放
     */
    @Override
    public void destroy() {
        System.out.println("destroy()");
    }
}
